Crate reqsign

source ·
Expand description

Signing API requests without effort.

Example

use anyhow::Result;
use reqsign::AwsConfigLoader;
use reqsign::AwsV4Signer;
use reqwest::Client;
use reqwest::Request;
use reqwest::Url;

#[tokio::main]
async fn main() -> Result<()> {
    // Signer can load region and credentials from environment by default.
    let signer = AwsV4Signer::builder()
        .config_loader(AwsConfigLoader::with_loaded())
        .service("s3")
        .allow_anonymous()
        .build()?;
    // Construct request
    let url = Url::parse("https://s3.amazonaws.com/testbucket")?;
    let mut req = reqwest::Request::new(http::Method::GET, url);
    // Signing request with Signer
    signer.sign(&mut req)?;
    // Sending already signed request.
    let resp = Client::new().execute(req).await?;
    println!("resp got status: {}", resp.status());
    Ok(())
}

Available Services

Features

reqsign support http::Request by default. Other request types support are hided under feature gates to reduce dependencies.

Re-exports

Modules

Structs

Traits